package com.jdk.demo.queue.synchronousQueue;

import java.util.Random;
import java.util.concurrent.SynchronousQueue;

public class Product implements Runnable {

	private SynchronousQueue<String> sc;
	private int i = 0;

	public Product(SynchronousQueue<String> sc) {
		super();
		this.sc = sc;
	}

	@Override
	public void run() {
		while (true) {
            try {
                sc.put("data:" + ++i);
                //将指定元素添加到此队列，如有必要则等待另一个线程接收它。
                // System.out.println("sc.offer(new Random().nextInt(50)): "+sc.offer(new Random().nextInt(50)));
                // 如果另一个线程正在等待以便接收指定元素，则将指定元素插入到此队列。如果没有等待接受数据的线程则直接返回false
                // System.out.println("sc.offer(2,5,TimeUnit.SECONDS):
                // "+sc.offer(2,5,TimeUnit.SECONDS));//如果没有等待的线程，则等待指定的时间。在等待时间还没有接受数据的线程的话，直接返回false
                System.out.println("添加操作运行完毕...");//是操作完毕，并不是添加或获取元素成功!
                Thread.sleep(1000);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
	}

}
